home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy005 / memory / memcon2.asm < prev    next >
Encoding:
Assembly Source File  |  1997-08-30  |  1.8 KB  |  56 lines

  1. .model tiny
  2. .code
  3.  org 100h
  4.  
  5.  Inicio:        CALL    LiberaMEM
  6.                 MOV     DX, Offset Cad1
  7.                 MOV     AH, 9h
  8.                 INT     21h
  9.  
  10.                 XOR     AH, AH
  11.                 INT     16h
  12.                 OR      AL, 00100000b
  13.                 CMP     AL, 's'
  14.                 JNE    ExitDOS
  15.  
  16.                 MOV     BX, 1000        ;  Pedimos 4000 bytes.
  17.                 MOV     AH, 48h
  18.                 INT     21h
  19.                 JC     ErrorMEM
  20.                 MOV     ES, AX
  21.  
  22.                 MOV     CX, 5000        ;  El máximo que pedimos era 4000
  23.                 XOR     AX, AX
  24.                 XOR     DI, DI
  25.                 REP  STOSB
  26.  
  27.                 MOV     AH, 49h
  28.                 INT     21h
  29.                 JNC    ExitDOS
  30.  
  31.  ErrorMEM:      MOV     DX, Offset Cad2
  32.                 MOV     AH, 9h
  33.                 INT     21h
  34.  ExitDOS:       MOV     AX, 4C00h
  35.                 INT     21h
  36.  
  37. Cad1            DB      'Programa que demuestra como NO se debe usar la memoria del PC',0ah,0dh
  38.                 DB      ' Se pedirá menos memoria de la necesaria y el sistema se bloqueará,',0ah,0dh
  39.                 DB      ' Quieres segir? (S/N)',0dh,0ah,'$'
  40. Cad2            DB      'Se ha producido un error en la memoria',0ah,0dh,'$'
  41.  
  42. LiberaMEM       PROC                    ;  Función que libera la memoria
  43.                 MOV     BX, SS          ; reservada por el DOS a nuestro
  44.                 MOV     AX, ES          ; programa y que no es utilizada.
  45.                 SUB     BX, AX          ;  ES debe contener el PSP.
  46.                 MOV     AX, SP
  47.                 ADD     AX, 15d
  48.                 SHR     AX, 4
  49.                 ADD     BX, AX
  50.                 MOV     AH, 4Ah
  51.                 INT     21h
  52.                 RET
  53. LiberaMEM       ENDP
  54.  
  55.                 END     Inicio
  56.